package com.systop.ltbook.sms.service;

import java.util.Date;
import java.util.List;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.systop.ltbook.sms.SmsConstants;
import com.systop.ltbook.sms.model.SmsSend;
import com.systop.ltbook.sms.smsproxy.SmsProxy;

/**
 * 短信管理类,短信模块的定时处理任务<br>

 * @author DU
 * 
 */
@Service("smsQuartzService")
public class SmsQuartzService {

	private static Logger logger = LoggerFactory.getLogger(SmsQuartzService.class);
	
	/**
   * 短信平台服务代理接口,用于完成短信发送等操作
   */
  @Autowired
	private SmsProxy smsProxy;
  
  /**
   * 短信发送的数据库操作类
   */
  @Autowired
  private SmsSendManager smsSendManager;
  
  /**
   * 发送短信
   * @throws Exception
   */
  public void sendMessages() throws Exception {
  	//logger.debug("启动短信发送任务....");
  	// 得到数据库中需要发送的短信列表
    List<SmsSend> smsSendList = smsSendManager.getNewSmsSends();
    // 遍历列表
    for (SmsSend smsSend : smsSendList) {
    	try {
        // 调用代理的发送功能,得到短信发送后的状态代码
        int state = smsProxy.sendMessage(smsSend);

        // 更新数据库中短信的状态,不为新短信,短信发送时间
        smsSend.setIsNew(SmsConstants.SMS_SEND_IS_NOT_NEW);
        smsSend.setSendTime(new Date());
        smsSend.setMasid(state);
        smsSendManager.update(smsSend);
      } catch (Exception ex) {
        logger.error("SmsManager.sendMessages()Error:{}", ex.getMessage());
        throw ex;
      }
    }
  }
}
